// pages/pay/pay.js

// 1.页面加载的时候
  // 1.从缓存中获取购物车数据 渲染到页面中
    // 这些数据 checked=true
// 2.微信支付
  // 1.哪些人 哪些账户 可以实现微信支付
    // 1.企业账户
    // 2.企业账号的小程序后台中 必须 给开发者 添加上白名单
      // 1.一个appid 可以同时绑定多个开发者
      // 2.这些开发者就可以公用这个appid 和 它的开发权限
// 3.支付按钮
  // 1.先判断缓存有没有token
  // 2.没有 则跳转到授权页面 进行获取token
  // 3.有token
  // 4.创建订单 获取订单编号
  // 5.已经完成了微信支付
  // 6.手动删除缓存中 已经被选中了的商品
  // 7.删除后的购物车数据 填充回缓存中
  // 8.再跳转页面


// 使用es7，需用导入一下两个文件        
import { showModal, requestPayment } from "../../utils/asyncWx.js";
import regeneratorRuntime from '../../lib/runtime/runtime';
import {request} from "../../request/index.js"
Page({

  /**
   * 页面的初始数据
   */
  data: {
    address:{},
    cart:[],
    sumPrice:0,
    sumNum:0
  },
  onShow: function () {
    // 1.获取本地存储中的地址数据
    const address = wx.getStorageSync("address");
    // 1.获取缓存中的购物车数据
    let cart = wx.getStorageSync("cart")||[];
    // 过滤后的购物车数组
    cart = cart.filter(e=>e.checked)
    this.setData({address});
    // 总价格 总数量
    let sumPrice=0;
    let sumNum=0;
    checkedCart.forEach(e => {
      sumPrice+=e.num*e.goods_price;
      sumNum+=e.num;
    });
    this.setData({
      cart,sumPrice,sumNum,address
    });
  },
  async payOperBtn(){
    try {
       // 1.判断缓存中有没有token
      const token = wx.getStorageSync("token");
      // 2.判断
      if(!token){
        wx.navigateTo({
          url: '/pages/auth/auth',
        });
        return;
      }
      // 3.创建订单
        // 1.准备 请求头参数
      // const header = { Authorization:token };
        // 2.准备 请求体参数
      const order_price = this.data.sumPrice;
      const consignee_addr = this.data.address;
      const cart = this.data.cart;
      let goods=[];
      cart.forEach(e=>goods.push({
        goods_id:e.goods_id,
        goods_number:e.goods_number,
        goods_price:e.goods_price
      }))
      const orderParams = {order_price,consignee_addr,goods}
      // 4.发送请求 创建订单
      const {order_number}=await request({url:"/my/orders/create",data:orderParams,methods:"POST"})
      // console.log(order_number);
      // 5.发起预支付的接口
      const {pay} = await request({url:"/my/orders/req_unifiedorder",methods:"POST",data:{order_number}})
      // console.log(pay);
      // 6.发起微信支付
      await requestPayment(pay);
      // 7.查询后台 订单状态
      const res = await request({url:"/my/orders/chkOrder",methods:"POST",data:{order_number}})
      // console.log(res);
      await showModal({title:"支付成功"})
      // 8.手动删除缓存中 已经支付了的商品
      let newCart = wx.getStorageSync("cart");
      newCart = newCart.filter(e=>!e.checked);
      wx.setStorageSync("cart", newCart);
      // 8.支付成功跳转到订单页面
      wx.navigateTo({
        url: '/pages/order/order',
      });
    } catch (error) {
      await showModal({title:"支付失败"})
      console.log(error);
    }
  }
})